#!/bin/bash  

checkIp="172.16.0.6跳板机"
source /data/bash/early_warn_send.sh

# 服务及日志文件路径  
service_log=(
    "esp-finance-io /data/service/esp-finance-io.out"
    "esp-wechat-base /data/service/esp-wechat-base.out"
    "esp-pocket-biz /data/service/esp-pocket.out"
)

# 配置文件位置  
# 异常数的错误数量
error_log_dir="/data/logs/warn" 
error_pattern="ERROR"  

# 确保日志目录存在  
mkdir -p "$error_log_dir" 

# 读取当前时间戳  
current_timestamp=$(date +%s)  


# 遍历数组  
# 遍历服务  
for service in "${service_log[@]}"; do  
    IFS=' ' read -r -a row <<< "$service"  
    service_name="${row[0]}"  
    service_log_file="${row[1]}"  
  
    # 记录每个服务的异常数的文件名  
    error_count_file="$error_log_dir/cnt_${service_name}"  
    # 读取上次记录的异常数（如果文件不存在，则视为0）  
    last_errors=$(cat "$error_count_file" 2>/dev/null || echo 0)  
  
    # 读取当前异常数  
    current_errors=$(grep -c "$error_pattern" "$service_log_file")  

    # 时间戳文件
    notify_timestamp_file="$error_log_dir/timestamp_${service_name}"
    # 读取上次通知的时间戳（如果文件不存在，则视为很久以前）  
    last_notify_timestamp=$(cat "$notify_timestamp_file" 2>/dev/null || echo 0) 
    
    
  
    # 如果异常数有变化  
    if [ "$current_errors" -ne "$last_errors" ] && [ $((current_timestamp - last_notify_timestamp)) -ge 3600 ]; then  
  
        # 在这里可以添加发送通知的代码  
        # 例如：send_notification "$service_name 异常数从$last_errors变为$current_errors" 
        msg="${checkIp} ${service_name} 异常数从[$last_errors]变为[$current_errors] [${service_log_file}]."
        sendMsg "$msg" 
  
        # 更新记录文件  
        echo "$current_errors" > "$error_count_file"  
        
        # 更新上次通知的时间戳  
        echo "$current_timestamp" > "$notify_timestamp_file"  


        echo "$(date +"%Y-%m-%d %H:%M:%S.%3N") $msg" >> ${log_path}${log_file} 

    fi  
done  


# 消息换行
echo "" >> ${log_path}${log_file}
